<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>实战购物车</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script src="./index.js"></script>
    <link rel="stylesheet" href="./style.css">
</head>

<body>
    <div id='app' v-cloak>
        <template v-if='list.length'>
            <table>
                <thead>
                    <tr>
                        <th></th>
                        <th>商品名称</th>
                        <th>商品单价</th>
                        <th>购买数量</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for="(item,index) in list">
                        <td>{{index+1}}</td>
                        <td>{{item.name}}</td>
                        <td>{{item.price}}</td>
                        <td>
                            <button @click='handleReduce(index)' :disabled="item.count===1">-</button>
                            {{item.count}}
                            <button @click='handleAdd(index)'>+</button>
                        </td>
                        <td>
                            <button @click='handleRemove(index)'>移除</button>
                        </td>
                    </tr>
                </tbody>
            </table>
            <div>总价:￥{{totalPrice}}</div>
        </template>
        <div v-else>购物车为空</div>
    </div>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                list: [{
                    id: 1,
                    name: 'iPhone 7',
                    price: 6188,
                    count: 1
                }, {
                    id: 2,
                    name: 'iPad Pro',
                    price: 5888,
                    count: 1
                }, {
                    id: 3,
                    name: 'MacBook Pro',
                    price: 21488,
                    count: 1
                }, ]
            },
            computed: {
                totalPrice: function() {
                    var total = 0;
                    for (var i = 0; i < this.list.length; i++) {
                        var item = this.list[i];
                        total += item.price * item.count;
                    };
                    // 使用正则表达式匹配钱的千位分隔符 
                    // \B 匹配非字母和数字边界 \b 匹配字母或数字边界
                    // "g"标志表示正则表达式使用的global（全局）的状态 全局匹配
                    return total.toString().replace(/\B(?=(\d{3})+$)/g, ',')
                }
            },
            methods: {
                handleReduce: function(index) {
                    if (this.list[index].count === 1) return;
                    this.list[index].count--;
                },
                handleAdd: function(index) {
                    this.list[index].count++;
                },
                handleRemove: function(index) {
                    this.list.splice(index, 1);

                }

            }
        })
    </script>
</body>

</html>